home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD Practico: Seleccion De Shareware
/
CD Practico: Seleccion de Shareware.iso
/
SOFCAS
/
UTIL
/
ACCESO2M.ZIP
/
ACCESO2M.ESP
< prev
next >
Wrap
Text File
|
1997-01-01
|
11KB
|
249 lines
=============================================================
ACCESO 2M
=============================================================
-------------------------------------------------------------
Contenido
-------------------------------------------------------------
0. Limitación de la garantía
1. Marcas registradas
2. Introducción
3. Requerimientos
4. Uso de ACCESO 2M
5. Preguntas y respuestas
6. Comentarios finales
-------------------------------------------------------------
0. Limitación de la garantía
-------------------------------------------------------------
ACCESO 2M ha sido probado en varios equipos con éxito,
pero no se puede garantizar que su funcionamiento sea el
correcto bajo todas las configuraciones en otros equipos. Por
tanto úsalo a tu propio riesgo.
ACCESO 2M es software gratuito y se permite su uso y
copia por cualquier persona siempre y cuando se mantenga
inalterado el fichero ejecutable y que se distribuyan
conjuntamente el ejecutable y los ficheros de documentación.
-------------------------------------------------------------
1. Marcas registradas
-------------------------------------------------------------
MS-DOS, WINDOWS y WINDOWS95 son marcas registradas de
Microsoft Corporation
DELPHI es marca registrada de Borland Inc.
-------------------------------------------------------------
2. Introducción
-------------------------------------------------------------
ACCESO 2M sirve para extraer ficheros de los discos
formateados con 2M sin tener que abandonar Windows95 para
ello.
-------------------------------------------------------------
3. Requerimientos
-------------------------------------------------------------
El programa está pensado para usarse bajo Windows95,
pero, como el compilador usado produce ejecutables para
Windows convencional, también funciona bajo Windows en sus
versiones 3.1 y 3.11 aunque sea absurdo porque 2M opera
perfectamente en dichas versiones. Se necesitan 300Kb de
memoria libre para cargar el programa, 64Kb de memoria
convencional para un buffer de transferencia intermedio y un
15% de la capacidad del disco que se esté leyendo como caché.
Se necesita que 2M esté cargado antes de entrar en
Windows95 y que esté usando la interrupción 40h. Las
versiones de 2M que se admiten son la 2.1 y la 3.0; estas
versiones de 2M usan la interrupción 40h si determinan que
los accesos a los disquetes pasan por ella. Si esto no fuese
así se puede intentar cargar los programas residentes que
actúan sobre los disquetes en otro orden.
ACCESO 2M sólo funciona con disquetes que posean 512
bytes (lógicos, no necesariamente físicos) por sector y 1
sector por cluster; todos los discos formateados por 2MF usan
este formato por defecto.
-------------------------------------------------------------
4. Uso de ACCESO 2M
-------------------------------------------------------------
El manejo de ACCESO 2M es trivial e inmediato. Cabe
destacar que no se pueden seleccionar múltiples ficheros y
que si el disco presenta algún error en las zonas del sistema
(FAT, directorio raíz) o el área de los subdirectorios será
imposible extraer los ficheros de él.
-------------------------------------------------------------
5. Preguntas y respuestas
-------------------------------------------------------------
* ¿Por qué ocupa tanto ACCESO 2M?
* ¿En qué lenguaje está programado?
- Porque ha sido programado usando un lenguaje visual y
todos sabemos lo bonitos que son, lo fácil que es programar
con ellos y los extensos que resultan los ejecutables. A modo
de ejemplo, tan sólo el código y los datos que gestionan el
panel de los archivos ya ocupa 50Kb. Programando sin la ayuda
de los controles el ejecutable hubiese sido mucho menor y
hubiese sido mucho más costosa su programación.
- ACCESO 2M está programado en Delphi con un pequeño
fragmento en ensamblador.
* ¿Por qué ACCESO 2M no permite escribir en los discos?
* ¿Existirá algún día una versión que lo permita?
- Sencillamente porque el acceso a los discos se hace a
nivel de sectores y ya es bastante tedioso tener que obtener
los sectores en los que está situado determinado fichero para
luego leerlo. El proceso de escribir un fichero ya es más
costoso y se trata de escribir un programa "para salir del
paso" no de reprogramar las rutinas de acceso a ficheros del
MS-DOS.
- Seguramente no existirá nunca una versión que permita
escribir los discos 2M.
* ¿Cuál es el truco?
* ¿Cómo funciona ACCESO 2M?
* ¿Cómo se comunica con 2M?
- Bueno, el truco es muy simple. Windows95 utiliza sus
drivers de modo protegido para acceder a los disquetes sin
tener en cuenta a la BIOS ni a los programas residentes del
MS-DOS que subyace bajo él, aunque estos programas continúan
en la memoria convencional y son perfectamente accesibles si
se les llama sin usar interrupciones.
Este es precisamente el proceso, se usa la función DPMI
"Simulate Real Mode Call Far With Iret Frame" (Int 31h
AX=0302h) usando la dirección de la interrupción 40h con una
estructura de registros adecuada para que la dirección de
transferencia de los datos del disco a leer esté en la
memoria convencional en un buffer que previamente hemos
solicitado a Windows con la función GlobalDOSAlloc. Tras la
transferencia copiamos el contenido del buffer a memoria
accesible directamente por el programa. O sea, que lo que se
hace es como si en modo real o virtual86 hubiésemos llamado a
la interrupción 40h pero con la pareja de instrucciones
pushf/call far, y, por cierto que este mecanismo se puede
usar si cargamos 2M en una ventana de MS-DOS y nos fabricamos
un programa que use la interrupción 13h que será la que use
2M en dichas circunstancias.
* ¿Por qué no usas la interrupción 13h en lugar de la
40h?
- Porque Windows95 al ejecutarse desvía el vector de la
interrupción 40h y le hace apuntar a una instrucción del tipo
"arpl ..." por si algún programa intenta llamar a la
interrupción 13h con pushf/call far. Lógicamente la ejecución
de la instrucción arpl en modo virtual86 produce una
excepción que intercepta Windows95 y procede a acceder a los
discos usando sus drivers de modo protegido y nunca refleja a
modo virtual86 la interrupción 13h ni la 40h. Si llamase a la
interrupción 13h con este proceso el resultado sería el mismo
que si se intentase acceder normalmente a los disquetes.
* ¿Cómo se determina la presencia de 2M?
- Uso el mismo proceso descrito para llamar a la
interrupción 40h con la 2Fh y examino la memoria convencional
usando selectores obtenidos mediante la función DPMI "Segment
to Selector" (Int 31h AX=0002h) en el caso de que la llamada
la reciba algún programa que usa el convenio CiriSOFT. Por
cierto que en la documentación del Delphi sobre el DPMI de
Windows dice que esta función no se debe usar, pero no
encontraba otra forma de obtener selectores que apuntasen a
la memoria convencional y este método funciona y no produce
ningún perjuicio (que yo sepa).
* ¿Está disponible el código fuente?
- No. Salvo el truco para acceder a 2M el resto del
código es programación convencional que no tiene nada de
especial, está sin comentar y no es en absoluto instructivo.
* ¿Qué es eso del caché?
- ACCESO 2M siempre trata de leer del disco por pistas
enteras para agilizar el proceso de lectura (yo considero una
pista la porción de cilindro que queda en una cara, o sea,
que un disco normal de 1440Kb tiene 80 cilindros y 160
pistas). Se utiliza un caché organizado por pistas en el que
se mantienen las últimas leídas y de tamaño el 15% de la
capacidad total del disco, que provee el sector solicitado
por las funciones de lectura.
Si la pista en la que reside el sector presenta un error
se intenta leer el sector aislado que se solicitó y si esto
tampoco fuera posible se informa del error y se concluye la
tarea que se estuviese realizando. Por esta razón no es
posible leer de un disquete que tenga defectuoso un sector en
el que resida parte de un subdirectorio porque siempre se lee
todo el árbol de directorios.
-------------------------------------------------------------
6. Comentarios finales
-------------------------------------------------------------
+ Este programa está especialmente dedicado a Ciriaco
García de Celis, autor de 2M.